/**
 * Created by Aber on 17/4/1.
 */
// 加载模块
define('ueditor', function() {
    require("./ueditor.config.js");
    require("./ueditor.all.min.js");
    require("./lang/zh-cn/zh-cn.js");
});
module.exports = function(ngModule) {
    require('./ueditor.scss');
    ngModule.directive('ueditor',function () {
        return {
            restrict: 'E',//元素(element)
            scope: {uid:"=",k:"@"},
            replace: true,
            template: require('./index.html'),//模板
            controllerAs: 'ueditor',//
            controller: function ($scope,$http) {
                //保存
                //读取
                $scope.noteTitle="新建笔记";

                var myEditor={
                    setContent: function (data) {//设置内容 重新填写 data:String
                        UE.getEditor($scope.uid).ready(function () {
                            UE.getEditor($scope.uid).setContent(data);
                        })
                    },
                    getContent: function () {//获得输入的内容
                        if(!UE.getEditor($scope.uid).hasContents()){
                            layer.msg("内容为空");
                            return null;
                        }
                        else if( $scope.noteTitle===""){
                            layer.msg("标题不能为空");
                            return null;
                        }
                        else{
                            return UE.getEditor($scope.uid).getContent();
                        }
                    },
                    insertHtml: function () {//插入给定内容
                        var value = prompt('插入html代码', '');
                        UE.getEditor($scope.uid).execCommand('insertHtml', value)
                    },
                    hasContent: function () {//是否有内容
                        var arr = [];
                        arr.push("使用editor.hasContents()方法判断编辑器里是否有内容");
                        arr.push("判断结果为：");
                        arr.push(UE.getEditor($scope.uid).hasContents());
                        alert(arr.join("\n"));
                    },
                    setFocus: function () {//获得焦点
                        UE.getEditor($scope.uid).focus();
                    },
                    setblur: function (e) {//失去焦点
                        UE.getEditor($scope.uid).blur();
                        UE.dom.domUtils.preventDefault(e)
                    },
                    createEditor:function(){//创建新的编辑器
                        datas={id:-1,
                            List_name:"",
                            Content:""
                        };
                        myEditor.setContent("");
                        $('#title').val("");
                    }
                };
                $scope.save=function () {
                    $scope.node_data.saveContent()
                }
                $scope.node_data=function(){
                    return{
                        readDatas:function(id){//String读取文章数据，写入内容 使用事件委托
                            $http({
                                method:"post",
                                url:'/noted/detail',
                                data:{data:{noteid:id}}
                            }).then(function(data) {
                                if(data.data.result)
                                {
                                    console.log(data.data.result.content)
                                    //如果不空
                                    $scope.noteTitle=data.data.result.nickname;
                                    myEditor.setContent(data.data.result.content);
                                }
                            })
                        },
                        saveContent:function(){
                            //保存数据
                            //获得内容
                            var datak={data:{content:myEditor.getContent(),nickname:$scope.noteTitle,noteid:$scope.uid}};
                            console.log(datak)
                            if(datak.data.content!==null){
                                $http({
                                    method:"post",
                                    url:'/noted/update',
                                    data:datak
                                }).then(function(data) {
                                    if(data.data.result)
                                    {
                                        console.log(data.data.result)
                                        //如果不空
                                        layer.msg("更新成功")
                                    }else{
                                    }
                                }).catch(function(data) {
                                    $http({
                                        method:"post",
                                        url:'/noted/create',
                                        data:datak
                                    }).then(function(data) {
                                        if(data.data.result)
                                        {
                                            $scope.treedata.data.push({label:data.data.result.nickname,type:"file",id:data.data.result.noteid,children:[]})
                                        }
                                    })
                                });
                            }

                        }
                    }
                }()
                $scope.node_data.readDatas($scope.uid);
            },
            link:function ($scope,elements,attrs) {
                (function (uid) {
                    //销毁
                    UE.delEditor(''+uid)
                    var html='<script id='+uid+' type="text/plain" style="width:100%;height:500px;"></script>';
                    elements.append(html);
                    var editor = new UE.ui.Editor()
                    editor.render(uid)
                    // UE.getEditor(''+uid);
                })($scope.uid)
            }
        }
    });
    require(['ueditor'], function (){
        // var $=require('jQuery');
        // var ue = UE.getEditor($scope.uid);
        //建议使用工厂方法getEditor创建和引用编辑器实例，如果在某个闭包下引用该编辑器，直接调用UE.getEditor($scope.uid)就能拿到相关的实例
    })
}